/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Beans;

import conexion.Coneccion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author USUARIO
 */
public class ModVeh_Vehiculo {
    
    private Integer idvehiculo;
    private String placa;
    private String modelo;
    private String tipoVehiculo;
    private boolean estado;
    private int fk_idtipobus;
    private int fk_idusuario_crea;
    private int fk_idusuario_mod;
    private boolean eliminado;
    private String accion;

    public ModVeh_Vehiculo() {
    }

    public int getFk_idtipobus() {
        return fk_idtipobus;
    }

    public String getTipoVehiculo() {
        return tipoVehiculo;
    }

    public void setTipoVehiculo(String tipoVehiculo) {
        this.tipoVehiculo = tipoVehiculo;
    }    

    public void setFk_idtipobus(int fk_idtipobus) {
        this.fk_idtipobus = fk_idtipobus;
    }

    public Integer getIdvehiculo() {
        return idvehiculo;
    }

    public void setIdvehiculo(Integer idvehiculo) {
        this.idvehiculo = idvehiculo;
    }

    public String getPlaca() {
        return placa;
    }

    public void setPlaca(String placa) {
        this.placa = placa;
    }

    public String getModelo() {
        return modelo;
    }

    public void setModelo(String modelo) {
        this.modelo = modelo;
    }

    public boolean getEstado() {
        return estado;
    }

    public void setEstado(boolean estado) {
        this.estado = estado;
    }

    public int getFk_idusuario_crea() {
        return fk_idusuario_crea;
    }

    public void setFk_idusuario_crea(int fk_idusuario_crea) {
        this.fk_idusuario_crea = fk_idusuario_crea;
    }

    public int getFk_idusuario_mod() {
        return fk_idusuario_mod;
    }

    public void setFk_idusuario_mod(int fk_idusuario_mod) {
        this.fk_idusuario_mod = fk_idusuario_mod;
    }

    public boolean isEliminado() {
        return eliminado;
    }

    public void setEliminado(boolean eliminado) {
        this.eliminado = eliminado;
    }

    public String getAccion() {
        return accion;
    }

    public void setAccion(String accion) {
        this.accion = accion;
    }
    
    /* --------------------------------------------- */
    public Integer operaciones(ModVeh_Vehiculo v)
    {
        String inserto;
        CallableStatement ps = null;
        ResultSet rs = null;
        Integer id = 0;
        Connection cn = Coneccion.getConexion();
        try
        {   ps = cn.prepareCall("{call mante_pas_vehiculo_operacion"
                + "(?,?,?,?,?,?,?,?)}");
            ps.setInt(1, v.getIdvehiculo());
            ps.setString(2, v.getPlaca());
            ps.setString(3, v.getModelo());            
            ps.setBoolean(4, v.getEstado());
            ps.setInt(5, v.getFk_idusuario_crea());
            ps.setInt(6, v.getFk_idusuario_mod());
            ps.setBoolean(7, v.isEliminado());
            ps.setString(8, v.getAccion());
            rs = ps.executeQuery();
            if (rs.next())
            {   if(v.getAccion().equals("U"))
                {   inserto = "La operación fue actualizado correctamente";
                    id = rs.getInt(1);
                } else
                {   if(v.getAccion().equals("I"))
                    {   inserto = "Se inserto correctamente el nuevo registro";
                        id = rs.getInt(1);
                    } else 
                    {   inserto = "El registro fue Eliminado Correctamente";
                        id = rs.getInt(1);
                    }
                }
            } else 
            {   inserto = "No se realizo la operación";
            }
        } catch(Exception ex)
        {   inserto = ex.getMessage();
            System.out.println("fallo ERROR" + ex.getMessage());
        } finally
        {   try
            {   rs.close();
                ps.close();
                cn.close();
            } catch(Exception e) {}
        }
        return id;
    }
    
    public ArrayList<ModVeh_Vehiculo> listarVehiculos()
    {   ArrayList<ModVeh_Vehiculo> listaV = new ArrayList<ModVeh_Vehiculo>();
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("select * from view_pas_vehiculo_listar");
            rs = ps.executeQuery();
            while(rs.next())
            {   ModVeh_Vehiculo v = new ModVeh_Vehiculo();
                v.setIdvehiculo(rs.getInt(1));
                v.setPlaca(rs.getString(2));
                v.setModelo(rs.getString(3));
                v.setFk_idusuario_crea(rs.getInt(5));
                v.setFk_idusuario_mod(rs.getInt(6));
                v.setEliminado(rs.getBoolean(9));
                listaV.add(v);
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }         
       return listaV;
    }
    
    
    public ModVeh_Vehiculo ObtenerVehiculoById(int id)
    {   ModVeh_Vehiculo v = new ModVeh_Vehiculo();
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("select * from view_pas_vehiculo_listar where idvehiculo=?");
            ps.setInt(1, id);
            rs = ps.executeQuery();
            while(rs.next())
            {   v.setIdvehiculo(rs.getInt(1));
                v.setPlaca(rs.getString(2));
                v.setModelo(rs.getString(3));
                v.setEstado(rs.getBoolean(4));
                v.setTipoVehiculo(rs.getString(6));
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }         
       return v;
    }
    
    
}
